home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
pctjja86.arc
/
SCROLL.BAS
< prev
next >
Wrap
BASIC Source File
|
1985-10-16
|
2KB
|
53 lines
1 REM *** Four-way scrolling routines for BASIC interpreter ***
2 REM The four routines are stored in arrays for this example.
3 REM Defining new variables after the VARPTR calls will cause
4 REM errors because the location of the array will change.
5 REM Each routine scrolls one character and does nto blank new
6 REM line/column.
10 DIM DIR%(11,3) ' For 2nd dimension: 0=UP, 1=DN, 2=LF, 3=RT
20 REM Move the subroutines into arrays
30 FOR J%=0 TO 3: FOR I%=0 TO 11: READ DIR%(I%,J%): NEXT I%,J%
40 REM Define function to change 80 to 40 columns
50 DEF FNCHG%(X%)=X%\2 AND -2
100 REM Scroll up subroutine
110 DATA &HBF1E,&H0000,&HBE06,&H00A0,&H00B8,&H8EB0
120 DATA &H8ED8,&HB9C0,&H0780,&HF3FC,&H07A5,&HCB1F
200 REM Scroll down subroutine
210 DATA &HBF1E,&H0F9E,&HBE06,&H0EFE,&H00B8,&H8EB0
220 DATA &H8ED8,&HB9C0,&H0780,&HF3FD,&H07A5,&HCB1F
300 REM Scroll left subroutine
310 DATA &HBF1E,&H0000,&HBE06,&H0002,&H00B8,&H8EB0
320 DATA &H8ED8,&HB9C0,&H07CF,&HF3FC,&H07A5,&HCB1F
400 REM Scroll right subroutine
410 DATA &HBF1E,&H0F9E,&HBE06,&H0F9C,&H00B8,&H8EB0
420 DATA &H8ED8,&HB9C0,&H07CF,&HF3FD,&H07A5,&HCB1F
500 REM Check which adaptor is in use?á Change the
501 REM segment address in the subroutines if C/G adaptor
510 DEF SEG=&H40: IF (PEEK(16) AND 48)=48 GOTO 600 ELSE FOR I%=0
TO 3: DIR%(5,I%)=DIR%(5,I¼%) OR 8: NEXT I%
520 REM Text mode?
530 IF PEEK(73)>3 THEN PRINT "GRAPHIC MODE NOT ALLOWED": END
540 REM How many columns?
541 REM If 40 columns, then make changes in subroutines.
550 IF PEEK(74)=80 GOTO 600
560 FOR I%=0 TO 3: DIR%(1,I%)=FNCHG%(DIR%(1,I%))
570 IF I%<2 THEN DIR%(3,I%)=FNCHG%(DIR%(3,I%)) ELSE IF I%=3 THEN
DIR%(3,3)=1996
580 DIR%(8,I%)=DIR%(8,I%)\2: NEXT I%
600 REM Set up the pointers to the subroutines
610 REM Must set these variables first so values don't change
620 USUB%=0:DSUB%=0:RSUB%=0:LSUB%=0:FAR%=0:WAY$=""
630 USUB%=VARPTR(DIR%(0,0))
640 DSUB%=VARPTR(DIR%(0,1))
650 LSUB%=VARPTR(DIR%(0,2))
660 RSUB%=VARPTR(DIR%(0,3))
1000 REM Now scroll in any direction
1010 INPUT "WHICH WAY (U,D,L,R): ",WAY$
1020 INPUT "HOW FAR: ",FAR%
1030 DEF SEG: FOR I%=1 TO FAR%
1040 IF WAY$="U" THEN CALL USUB% ELSE IF WAY$="D" THEN CALL DSUB%
ELSE IF WAY$="L" THEN CALL LSUB% ELSE IF WAY$="R" THEN CALL RSUB%
ELSE GOTO 1000
1050 NEXT I%